"""
预备知识：python执行系统命令模块（subprocess）、IP地址处理模块(ipaddress)
输入内容：要检查的网段、子网掩码 (输入：192.168.0.0/24)
输出示例： 192.168.0.1已被使用
将输出结果放到文件
将可能存在异常的地方需要做相应处理
"""
import subprocess
import ipaddress


def getip(network):
    try:
        networks = ipaddress.ip_network(network)  # 迭代网段可用地址
        fopen = open("used_ip.txt", "a", encoding="utf-8")
        for i in networks.hosts():
            # 只发一个数据包，响应时间1s
            result = subprocess.run(["ping", "-n", "1", "-w", "1000", str(i)], capture_output=True, text=True)
            if "请求超时" not in result.stdout:
                fopen.write(f"{i}已经被使用\n")
        fopen.close()
    except ValueError:
        print("无效的子网掩码：", network)


while True:
    ins = input("请输入网段和检查的子网掩码（192.168.0.0/24）,按q退出:")
    if ins == "q":
        print("程序退出")
        break
    getip(ins)


